.before #logo {
  transform: translate3D(25px, 150px, 0) scale(2);
}

.before #theme-toggle {
  transform: rotate(540deg);
}

.before header,
.before #message-container {
  transform: translate3D(0, 200px, 0);
}

.before #theme-toggle,
.before #message-container {
  opacity: 0;
}

.after header,
.after #theme-toggle,
.after #logo,
.after #message-container {
  transition-property: transform, opacity;
  transition-duration: 1s;
  transition-timing-function: ease-in-out;
}

.animate-dotting {
  animation: dot 3s infinite step-start;
  display: inline-block;
  width: 1.5em;
  vertical-align: bottom;
  overflow: hidden;
}

@keyframes dot {
  0% {
    width: 0;
    margin-right: 1.5em;
  }
  33% {
    width: 0.2em;
    margin-right: 1.3em;
  }
  66% {
    width: 0.5em;
    margin-right: 1em;
  }
  100% {
    width: 1.5em;
    margin-right: 0;
  }
}

.animate-gradient-border {
  --border-width: 3px;
  position: relative;
  background-color: var(--c-bg);
  border-radius: calc(2 * var(--border-width));
}

.animate-gradient-border:after {
  content: "";
  position: absolute;
  top: calc(-1 * var(--border-width));
  left: calc(-1 * var(--border-width));
  height: calc(100% + var(--border-width) * 2);
  width: calc(100% + var(--border-width) * 2);
  background: linear-gradient(60deg, #f79533, #f37055, #ef4e7b, #a166ab);
  border-radius: calc(3 * var(--border-width));
  z-index: -1;
  animation: animatedgradient 2s ease alternate infinite;
  background-size: 300% 300%;
}

@keyframes animatedgradient {
  0% {
    background-position: 0% 0%;
  }
  25% {
    background-position: 100% 0%;
  }
  50% {
    background-position: 100% 100%;
  }
  75% {
    background-position: 0% 100%;
  }
  100% {
    background-position: 0% 0%;
  }
}
